package 算法基础模板.chapter_01;

import java.util.Scanner;

/**
 * 给定一个浮点数n，求它的三次方根。
 * <p>
 * 输入格式
 * 共一行，包含一个浮点数n。
 * <p>
 * 输出格式
 * 共一行，包含一个浮点数，表示问题的解。
 * <p>
 * 注意，结果保留6位小数。
 * <p>
 * 数据范围
 * −10000≤n≤10000
 * <p>
 * https://www.acwing.com/problem/content/description/792/ 数的三次方根
 * 浮点数二分
 *
 * @author Summerday
 */
public class FloatBinarySearchTemplate {

    static double n;
    static double eps = 1e-8; // eps 表示精度, 取决于题目对精度的要求 比 题目高两位

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextDouble();
        boolean flag = false;
        if (n < 0) {
            flag = true;
            n = -n;
        }

        double l = 0, r = 100;
        while (r - l > eps) {
            double mid = (l + r) / 2;
            if (check(mid, n)) {
                l = mid;
            } else {
                r = mid;
            }
        }

        System.out.println(String.format("%.6f", flag ? -l : l));
    }

    static boolean check(double x, double n) {
        return x * x * x < n;
    }

}
